package threadDemo;

/**
 * @author Ajie
 * @date 8/18/21
 * @function
 * 测试。Thread.yield() 不一定能出让资源。也许。CPU马上又切回来了。
 *
 * yield 是 Thread 类的一个静态方法，用于暂停当前线程的执行，并让其他线程有机会执行。
 *
 * 当一个线程调用 Thread.yield() 时，它会给调度器一个暗示，表示当前线程愿意让出处理器资源。
 * 然而，调度器可以忽略这个暗示，因此 yield() 并不能保证一定会切换到其他线程执行。!!!!!!
 *
 */
public class Thread_Yield_Demo extends Thread {

    public Thread_Yield_Demo(String name) {
        super(name);
    }

    @Override
    public void run() {
        for (int i = 1; i <= 50; i++) {
            System.out.println("" + this.getName() + "-----" + i);
            // 当i为30时，该线程就会把CPU时间让掉，让其他或者自己的线程执行（也就是谁先抢到谁执行）
            if (i == 30) {
                System.out.println("" + this.getName() + "-----yield------" );
                Thread.yield();
                System.out.println("" + this.getName() + "-----yield  over------" );
            }
        }
        System.out.println(this.getName() +" over---");
    }

    public static void main(String[] args) {
        Thread_Yield_Demo yt1 = new Thread_Yield_Demo("张三");
        Thread_Yield_Demo yt2 = new Thread_Yield_Demo("李四");
        yt1.start();
        yt2.start();
    }
}

